#!/bin/bash
source "sSystemctl.sh"
 MARK(){ $e "\e[1;35m";}
#
 HEAD()
{
 for (( a=2; a<=23; a++ ))
  do
   TPUT $a 1
        $E "\e[35m\xE2\x94\x82                                                                                \xE2\x94\x82\e[0m";
  done
              TPUT  1 1;$E "\033[0m\033[35m┌────────────────────────────────────────────────────────────────────────────────┐\033[0m";
              TPUT  2 3;$E "\e[36mКоманды окружающей среды\e[0m";
              TPUT  3 1;$E "\e[35m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
              TPUT  4 3;$E "\e[90msystemd поддерживает блок среды, который передается процессам, порожденным дис-\e[0m";
              TPUT  5 3;$E "\e[90mпетчером. Имена переменных могут содержать буквы ASCII, цифры и символ подчер-\e[0m";
              TPUT  6 3;$E "\e[90mкивания. Имена переменных не могут быть пустыми или начинаться с цифры.\e[0m";
              TPUT  7 3;$E "\e[90mВ значениях переменных допускается большинство символов, но вся последователь-\e[0m";
              TPUT  8 3;$E "\e[90mность должна быть допустимой UTF-8. Обратите внимание, что управляющие символы,\e[0m";
              TPUT  9 3;$E "\e[90mтакие как новая строка (NL), табуляция (TAB) или escape-символ (ESC), являются\e[0m";
              TPUT 10 3;$E "\e[90mдопустимыми ASCII и, следовательно, допустимыми UTF-8).\e[0m";
              TPUT 11 3;$E "\e[90mОбщая длина блока среды ограничена значением _SC_ARG_MAX определенным в sysconf\e[0m";
              TPUT 12 1;$E "\e[35m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
              TPUT 17 1;$E "\e[35m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
              TPUT 18 3;$E "\e[36mРабочие команды\e[0m";
              TPUT 19 1;$E "\e[35m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
              TPUT 22 1;$E "\033[35m├─ Up \xE2\x86\x91 \xE2\x86\x93 Down Select Enter ─────────────────────────────────────────────────────┤\e[0m";
}
 FOOT(){ MARK;TPUT 24 1;$E "\033[0m\033[35m└────────────────────────────────────────────────────────────────────────────────┘\033[0m";UNMARK;}
#
  M0(){ TPUT 13 3; $e "Дамп блока окружения менеджера systemd                     \e[32m show-environment \e[0m";}
  M1(){ TPUT 14 3; $e "Задайте одну или несколько переменных среды\e[32m set-environment VARIABLE=VALUE.. \e[0m";}
  M2(){ TPUT 15 3; $e "Отменить установку переменных среды systemd   \e[32m unset-environment VARIABLE... \e[0m";}
  M3(){ TPUT 16 3; $e "Импортируйте переменныe среды в блок systemd \e[32m import-environment VARIABLE... \e[0m";}
#
  M4(){ TPUT 20 3; $e "Список работ, которые находятся в процессе           \e[32m list-jobs [PATTERN...] \e[0m";}
  M5(){ TPUT 21 3; $e "Отменa заданий, по их числовым идентификаторам                \e[32m cancel JOB... \e[0m";}
#
  M6(){ TPUT 23 3; $e "Выход                                                                  \e[36m Exit \e[0m";}
LM=6
  MENU(){ for each in $(seq 0 $LM);do M${each};done;}
    POS(){ if [[ $cur == up ]];then ((i--));fi
           if [[ $cur == dn ]];then ((i++));fi
           if [[ $i -lt 0   ]];then i=$LM;fi
           if [[ $i -gt $LM ]];then i=0;fi;}
REFRESH(){ after=$((i+1)); before=$((i-1))
           if [[ $before -lt 0  ]];then before=$LM;fi
           if [[ $after -gt $LM ]];then after=0;fi
           if [[ $j -lt $i      ]];then UNMARK;M$before;else UNMARK;M$after;fi
           if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
           UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
   INIT(){ R;HEAD;FOOT;MENU;}
     SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
# Функция возвращения в меню
     ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  while [[ "$O" != " " ]]; do case $i in
  0) S=M0;SC; if [[ $cur == enter ]];then R;echo -e "
 Дамп блока окружения менеджера systemd.
 Это блок окружения, который передается всем процессам, запускаемым менеджером.
 Блок среды будет сброшен в прямой форме,
 подходящей для использования в большинстве оболочек.
 Если в значениях переменных нет специальных символов или пробелов,
 экранирование не выполняется, и присваивания имеют вид
 VARIABLEu003dvalue
 Если присутствуют пробелы или символы, которые имеют особое значение для оболочки,
 используется экранирование в одинарных кавычках, а присваивания имеют форму
 VARIABLE=\$'value'
 Известно, что этот синтаксис поддерживается
 bash, zsh, ksh и busybox\"s ash, но не dash или fish
";ES;fi;;
  1) S=M1;SC; if [[ $cur == enter ]];then R;echo -e "
 Задайте одну или несколько переменных среды диспетчера systemd,
 как указано в командной строке.
 Эта команда завершится ошибкой,
 если имена и значения переменных не соответствуют перечисленным выше правилам.
";ES;fi;;
  2) S=M2;SC; if [[ $cur == enter ]];then R;echo -e "
 Отменить установку одной или нескольких переменных среды systemd manager.
 Если указано только имя переменной, она будет удалена независимо от ее значения.
 Если указаны переменная и значение,
 переменная удаляется только в том случае, если она имеет указанное значение.
";ES;fi;;
  3) S=M3;SC; if [[ $cur == enter ]];then R;echo -e "
 Импортируйте все, одну или несколько переменных среды, установленных на клиенте,
 в блок среды диспетчера systemd. Если передается список имен переменных среды,
 значения на стороне клиента затем импортируются в блок среды менеджера.
 Если какие-либо имена не являются допустимыми именами переменных среды или имеют
 недопустимые значения в соответствии с правилами, описанными выше, возникает
 ошибка. Если аргументы не переданы, импортируется весь блок среды,
 унаследованный процессом systemctl.
 В этом режиме любые унаследованные недопустимые переменные среды спокойно
 игнорируются. Импорт полного унаследованного блока среды (вызов этой команды без
 каких-либо аргументов) не рекомендуется. Oболочка будет устанавливать десятки
 переменных, которые имеют смысл только локально и предназначены только для
 процессов, которые являются потомками оболочки.
 Такие переменные в блоке глобальной среды сбивают с толку другие процессы.
";ES;fi;;
  4) S=M4;SC; if [[ $cur == enter ]];then R;echo -e "
 Список работ, которые находятся в процессе.
 Если указан один или несколько ШАБЛОНОВ, отображаются только задания для единиц,
 соответствующих одному из них.
 В сочетании с --after или --before список дополняется информацией о том,
 какое другое задание ожидает каждое задание
 и какие другие задания ожидают его, см. выше.
";ES;fi;;
  5) S=M5;SC; if [[ $cur == enter ]];then R;echo -e "
 Отмените одно или несколько заданий,
 указанных в командной строке по их числовым идентификаторам.
 Если идентификатор задания не указан, отмените все ожидающие задания.
";ES;fi;;
#
  6) S=M6;SC;if [[ $cur == enter ]];then R;exit 0;fi;;
 esac;POS;done
